Merge dictionaries¶
D = D1.copy(); D.update(D2)
Write a Python script to merge Python Dictionaries.
1. Non-pythonic procedural way (item by item)¶
def merge_01(*dicts):
m1 = {}
for dict in dicts:
for k in dict.keys():
m1[k] = dict[k]
return(m1)
2. Classic pythonic way (copy & update)¶
def merge_02(*dicts):
m = {}
for dict in dicts:
if m is None
m = dict.copy()
else:
m.update(dict)
return(m)
3. Via dictionary comprehensions¶
def merge_03(*dicts):
return {k: v for d in dicts for k, v in d.items()}
4. Python 3.5+ pythonic way¶
Warning: crashes on Python <= 3.4
m4 = {**query, **route, **post}
Test:
route = {'id': 271,
'title': 'Fast apps'}
query = {'id': 1,
'render_fast': True}
post = {'email': 'j@j.com',
'name': 'Jeff'}
print("Individual dictionaries: ")
print("route: {}".format(route))
print("query: {}".format(query))
print("post: {}".format(post))
m1 = merge_01(route, query, post)
m2 = merge_02(route, query, post)
m3 = merge_03(route, query, post)
m4 = {**route, **query, **post}
print(m1)
print(m2)
print(m3)
print(m4)
print("Are the same? " + 'yes' if m1 == m2 and m2 == m3 and m3 == m4 else 'no')